package com.knowledgepoint.study.common.base;

import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.Collection;
import java.util.Map;

/**
 * 自定义 Mapper 接口，包含物理删除方法
 * @param <T> 实体类
 */
public interface BaseMapperX<T> extends com.baomidou.mybatisplus.core.mapper.BaseMapper<T> {
    
    /**
     * 根据 ID 物理删除
     * @param id 主键ID
     * @return 影响行数
     */
    int physicalDeleteById(Serializable id);

    /**
     * 根据 columnMap 条件物理删除记录
     * @param columnMap 表字段 map 对象
     * @return 影响行数
     */
    int physicalDeleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

    /**
     * 根据 ID 批量物理删除
     * @param idList 主键ID列表
     * @return 影响行数
     */
    int physicalDeleteBatchIds(@Param("list") Collection<? extends Serializable> idList);
}
